import Vue from 'vue'
import VueRouter from 'vue-router'

// 解决导航栏或底部导航频繁点击菜单报错的问题
const originalPath = VueRouter.prototype.push
VueRouter.prototype.push = function push (location) {
  return originalPath.call(this, location).catch(err => err)
}

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Manager',
    component: () => import('../views/Manager.vue'),
    redirect: '/home', // 重定向到主页
    children: [
      { path: '403', name: 'Auth', meta: {name: "无权限"}, component: () => import('../views/manager/Auth.vue') },
      { path: 'home', name: 'Home', meta: {name: "系统首页"}, component: () => import('../views/manager/Home.vue') },
      { path: 'user', name: 'User', meta: {name: "用户信息"}, component: () => import('../views/manager/User.vue') },
      { path: 'students', name: 'students', meta: {name: "学生信息"}, component: () => import('../views/manager/Students.vue') },
     
      { path: 'person', name: 'Person', meta: {name: "个人信息"}, component: () => import('../views/manager/Person.vue') },
      { path: 'password', name: 'Password', meta: {name: "修改密码"}, component: () => import('../views/manager/Password.vue') },
      { path: 'news', name: 'News', meta: {name: "新闻信息"}, component: () => import('../views/manager/News.vue') },
      { path: 'newsDetail', name: 'NewsDetail', meta: {name: "新闻详情页"}, component: () => import('../views/manager/NewsDetail.vue') },
      { path: 'orders', name: 'Orders', meta: {name: "订单管理"}, component: () => import('../views/manager/Orders.vue') },
      { path: 'notice', name: 'Notice', meta: {name: "系统公告"}, component: () => import('../views/manager/Notice.vue') },
      { path: 'logs', name: 'Logs', meta: {name: "系统日志"}, component: () => import('../views/manager/Logs.vue') },
      { path: 'charts', name: 'Charts', meta: {name: "图表统计"}, component: () => import('../views/manager/Charts.vue') },

    ]
  },
  { path: '/login', name: 'Login', meta: {name: "登录"}, component: () => import('../views/Login.vue') },
  { path: '/register', name: 'Register', meta: {name: "注册"}, component: () => import('../views/Register.vue') },
  { path: '*', name: '404', meta: {name: "无法访问"}, component: () => import('../views/404.vue') },

]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

router.beforeEach((to, from, next) => {
  let userStr = localStorage.getItem('honey-user')
  // to 是到达的路由信息
  // from 是开源的路由信息
  // next 帮助我们跳转路由的函数
  let adminPaths = ['/user']
  let user = JSON.parse(userStr || '{}')

  // 若当前登录的是用户不是管理员，然后当前的到达路径是管理员才有权限访问的路径，
  // 那么让用户跳转到一个没有权限的页面,不让他访问实际的页面
  if (user.role !== '管理员' && adminPaths.includes(to.path)) {
    next('/403')
  } else {
    next()
  }
})

export default router
